﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;

namespace BadHabit.Factory {

    /// <summary>
    /// Custom Factory commands.
    /// </summary>
    public class FactoryCommands {

        public static System.Windows.Input.RoutedUICommand RequestData { get; private set; }
        
        public static System.Windows.Input.RoutedUICommand PlanSprint { get; private set; }
        public static System.Windows.Input.RoutedUICommand AddSprint { get; private set; }
        public static System.Windows.Input.RoutedUICommand BreakSprint { get; private set; }
        
        public static System.Windows.Input.RoutedUICommand StartProject { get; private set; }
        public static System.Windows.Input.RoutedUICommand CloseProject { get; private set; }
        public static System.Windows.Input.RoutedUICommand CancelProject { get; private set; }
        public static System.Windows.Input.RoutedUICommand SuspendProject { get; private set; }

        public static System.Windows.Input.RoutedUICommand DeleteBacklogItem { get; private set; }


        public static System.Windows.Input.RoutedUICommand AddProposal { get; private set; }
        public static System.Windows.Input.RoutedUICommand RejectProposal { get; private set; }
        public static System.Windows.Input.RoutedUICommand ApproveProposal { get; private set; }
        public static System.Windows.Input.RoutedUICommand EditProposalRoles { get; private set; }
        public static System.Windows.Input.RoutedUICommand PreviewProposal { get; private set; }
        public static System.Windows.Input.RoutedUICommand ExportProposal { get; private set; }
        public static System.Windows.Input.RoutedUICommand PrintProposal { get; private set; }

        public static System.Windows.Input.RoutedUICommand ViewTaskTail { get; private set; }
        public static System.Windows.Input.RoutedUICommand AddTaskMaterial { get; private set; }
        public static System.Windows.Input.RoutedUICommand AddTaskMaterialLink { get; private set; }


        public static System.Windows.Input.RoutedUICommand AddProjectTask { get; private set; }
        public static System.Windows.Input.RoutedUICommand AddTask { get; private set; }
        public static System.Windows.Input.RoutedUICommand CancelTask { get; private set; }
        public static System.Windows.Input.RoutedUICommand DoneTask { get; private set; }
        public static System.Windows.Input.RoutedUICommand MoveTask { get; private set; }

        public static System.Windows.Input.RoutedUICommand UnitChangeTask { get; private set; }

        public static System.Windows.Input.RoutedUICommand IsPayableChangeTask { get; private set; }

        public static System.Windows.Input.RoutedUICommand ViewTeamAllocation { get; private set; }


        public static System.Windows.Input.RoutedUICommand MoveUpClick { get; private set; }
        public static System.Windows.Input.RoutedUICommand MoveDownClick { get; private set; }

        public static System.Windows.Input.RoutedUICommand OpenItemDetail { get; private set; }

        
        /// <summary>
        /// Default static constructor.
        /// </summary>
        static FactoryCommands() {
            RequestData = new System.Windows.Input.RoutedUICommand("RequestData", "RequestData", typeof(FactoryCommands));

            PlanSprint = new System.Windows.Input.RoutedUICommand("PlanSprint", "PlanSprint", typeof(FactoryCommands));
            AddSprint = new System.Windows.Input.RoutedUICommand("PlanSprint", "PlanSprint", typeof(FactoryCommands));
            BreakSprint = new System.Windows.Input.RoutedUICommand("BreakSprint", "BreakSprint", typeof(FactoryCommands));
        
            StartProject = new System.Windows.Input.RoutedUICommand("StartProject", "StartProject", typeof(FactoryCommands));
            CloseProject = new System.Windows.Input.RoutedUICommand("CloseProject", "CloseProject", typeof(FactoryCommands));
            CancelProject = new System.Windows.Input.RoutedUICommand("CancelProject", "CancelProject", typeof(FactoryCommands));
            SuspendProject = new System.Windows.Input.RoutedUICommand("SuspendProject", "SuspendProject", typeof(FactoryCommands));

            RejectProposal = new System.Windows.Input.RoutedUICommand("RejectProposal", "RejectProposal", typeof(FactoryCommands));
            ApproveProposal = new System.Windows.Input.RoutedUICommand("ApproveProposal", "ApproveProposal", typeof(FactoryCommands));
            EditProposalRoles = new System.Windows.Input.RoutedUICommand("EditProposalRoles", "EditProposalRoles", typeof(FactoryCommands));
            PreviewProposal = new System.Windows.Input.RoutedUICommand("PreviewProposal", "PreviewProposal", typeof(FactoryCommands));
            ExportProposal = new System.Windows.Input.RoutedUICommand("ExportProposal", "ExportProposal", typeof(FactoryCommands));
            PrintProposal = new System.Windows.Input.RoutedUICommand("PrintProposal", "PrintProposal", typeof(FactoryCommands));
            AddProposal = new System.Windows.Input.RoutedUICommand("AddProposal", "AddProposal", typeof(FactoryCommands));

            DeleteBacklogItem = new System.Windows.Input.RoutedUICommand("DeleteBacklogItem", "DeleteBacklogItem", typeof(FactoryCommands));

            ViewTaskTail = new System.Windows.Input.RoutedUICommand("ViewTaskTail", "ViewTaskTail", typeof(FactoryCommands),
                new System.Windows.Input.InputGestureCollection(new InputGesture[] { new KeyGesture(Key.T, ModifierKeys.Control) }));



            AddTaskMaterial = new System.Windows.Input.RoutedUICommand("AddTaskMaterial", "AddTaskMaterial", typeof(FactoryCommands));
            AddTaskMaterialLink = new System.Windows.Input.RoutedUICommand("AddTaskMaterialLink", "AddTaskMaterialLink", typeof(FactoryCommands));


            AddTask = new System.Windows.Input.RoutedUICommand("AddTask", "AddTask", typeof(FactoryCommands));

            AddProjectTask = new System.Windows.Input.RoutedUICommand("AddProjectTask", "AddProjectTask", typeof(FactoryCommands));


            CancelTask = new System.Windows.Input.RoutedUICommand("CancelTask", "CancelTask", typeof(FactoryCommands));

            DoneTask = new System.Windows.Input.RoutedUICommand("DoneTask", "DoneTask", typeof(FactoryCommands),
                new System.Windows.Input.InputGestureCollection(new InputGesture[] { new KeyGesture(Key.D, ModifierKeys.Control) }));

            MoveTask = new System.Windows.Input.RoutedUICommand("MoveTask", "MoveTask", typeof(FactoryCommands));

            UnitChangeTask = new System.Windows.Input.RoutedUICommand("UnitChangeTask", "UnitChangeTask", typeof(FactoryCommands));

            IsPayableChangeTask = new System.Windows.Input.RoutedUICommand("IsPayableChangeTask", "IsPayableChangeTask", typeof(FactoryCommands));

            ViewTeamAllocation = new System.Windows.Input.RoutedUICommand("ViewTeamAllocation", "ViewTeamAllocation", typeof(FactoryCommands),
                new System.Windows.Input.InputGestureCollection(new InputGesture[] { new KeyGesture(Key.T, ModifierKeys.Alt) }));


            MoveUpClick = new System.Windows.Input.RoutedUICommand("MoveUpClick", "MoveUpClick", typeof(FactoryCommands),
                new System.Windows.Input.InputGestureCollection(new InputGesture[] { new KeyGesture(Key.Add, ModifierKeys.Control) }));

            MoveDownClick = new System.Windows.Input.RoutedUICommand("MoveDownClick", "MoveDownClick", typeof(FactoryCommands),
                new System.Windows.Input.InputGestureCollection(new InputGesture[] { new KeyGesture(Key.Subtract, ModifierKeys.Control) }));

            OpenItemDetail = new System.Windows.Input.RoutedUICommand("OpenItemDetail", "OpenItemDetail", typeof(FactoryCommands));

        }
        
    }
}
